feat: [health] introduce MedicalDeviceInfo message for Software as Medical Device (SaMD) metadata tracking#8328
Merged
pearigee merged 4 commits intoMay 28, 2026
Conversation
…cations feat: Add GetDataPoint and GetIdentity methods to DataPointsService feat: Enable filtering Electrocardiogram data by start time docs: Update ExportExerciseTcx documentation for direct download via HTTP fix!: Changed proto3 optional flag of an existing field `active_zone_minutes` in message `.google.devicesandservices.health.v4.ActiveZoneMinutes` fix!: Changed proto3 optional flag of an existing field `sum_in_cardio_heart_zone` in message `.google.devicesandservices.health.v4.ActiveZoneMinutesRollupValue` fix!: Changed proto3 optional flag of an existing field `sum_in_peak_heart_zone` in message `.google.devicesandservices.health.v4.ActiveZoneMinutesRollupValue` fix!: Changed proto3 optional flag of an existing field `sum_in_fat_burn_heart_zone` in message `.google.devicesandservices.health.v4.ActiveZoneMinutesRollupValue` fix!: Changed proto3 optional flag of an existing field `active_minutes` in message `.google.devicesandservices.health.v4.ActiveMinutes` fix!: Changed proto3 optional flag of an existing field `active_minutes_sum` in message `.google.devicesandservices.health.v4.ActiveMinutesRollupValue` fix!: Changed proto3 optional flag of an existing field `gain_millimeters` in message `.google.devicesandservices.health.v4.Altitude` fix!: Changed proto3 optional flag of an existing field `kcal` in message `.google.devicesandservices.health.v4.BasalEnergyBurned` fix!: Changed proto3 optional flag of an existing field `percentage` in message `.google.devicesandservices.health.v4.BodyFat` fix!: Changed proto3 optional flag of an existing field `body_fat_percentage_avg` in message `.google.devicesandservices.health.v4.BodyFatRollupValue` fix!: Changed proto3 optional flag of an existing field `kcal` in message `.google.devicesandservices.health.v4.CaloriesInHeartRateZoneRollupValue` fix!: Changed proto3 optional flag of an existing field `min_beats_per_minute` in message `.google.devicesandservices.health.v4.DailyHeartRateZones` fix!: Changed proto3 optional flag of an existing field `max_beats_per_minute` in message `.google.devicesandservices.health.v4.DailyHeartRateZones` fix!: Changed proto3 optional flag of an existing field `breaths_per_minute` in message `.google.devicesandservices.health.v4.DailyRespiratoryRate` fix!: Changed proto3 optional flag of an existing field `average_percentage` in message `.google.devicesandservices.health.v4.DailyOxygenSaturation` fix!: Changed proto3 optional flag of an existing field `lower_bound_percentage` in message `.google.devicesandservices.health.v4.DailyOxygenSaturation` fix!: Changed proto3 optional flag of an existing field `upper_bound_percentage` in message `.google.devicesandservices.health.v4.DailyOxygenSaturation` fix!: Changed proto3 optional flag of an existing field `standard_deviation_percentage` in message `.google.devicesandservices.health.v4.DailyOxygenSaturation` fix!: Changed proto3 optional flag of an existing field `beats_per_minute` in message `.google.devicesandservices.health.v4.DailyRestingHeartRate` fix!: Changed proto3 optional flag of an existing field `nightly_temperature_celsius` in message `.google.devicesandservices.health.v4.DailySleepTemperatureDerivations` fix!: Changed proto3 optional flag of an existing field `baseline_temperature_celsius` in message `.google.devicesandservices.health.v4.DailySleepTemperatureDerivations` fix!: Changed proto3 optional flag of an existing field `relative_nightly_stddev_30d_celsius` in message `.google.devicesandservices.health.v4.DailySleepTemperatureDerivations` fix!: Changed proto3 optional flag of an existing field `vo2_max` in message `.google.devicesandservices.health.v4.DailyVO2Max` fix!: Changed proto3 optional flag of an existing field `vo2_max_covariance` in message `.google.devicesandservices.health.v4.DailyVO2Max` fix!: Changed proto3 optional flag of an existing field `millimeters` in message `.google.devicesandservices.health.v4.Distance` fix!: Changed proto3 optional flag of an existing field `millimeters_sum` in message `.google.devicesandservices.health.v4.DistanceRollupValue` fix!: Changed proto3 optional flag of an existing field `pool_length_millimeters` in message `.google.devicesandservices.health.v4.Exercise` fix!: Changed proto3 optional flag of an existing field `count` in message `.google.devicesandservices.health.v4.Floors` fix!: Changed proto3 optional flag of an existing field `count_sum` in message `.google.devicesandservices.health.v4.FloorsRollupValue` fix!: Changed proto3 optional flag of an existing field `gain_millimeters_sum` in message `.google.devicesandservices.health.v4.AltitudeRollupValue` fix!: Changed proto3 optional flag of an existing field `beats_per_minute` in message `.google.devicesandservices.health.v4.HeartRate` fix!: Changed proto3 optional flag of an existing field `rate_min` in message `.google.devicesandservices.health.v4.RunVO2MaxRollupValue` fix!: Changed proto3 optional flag of an existing field `rate_max` in message `.google.devicesandservices.health.v4.RunVO2MaxRollupValue` fix!: Changed proto3 optional flag of an existing field `rate_avg` in message `.google.devicesandservices.health.v4.RunVO2MaxRollupValue` fix!: Changed proto3 optional flag of an existing field `run_vo2_max` in message `.google.devicesandservices.health.v4.RunVO2Max` fix!: Changed proto3 optional flag of an existing field `height_millimeters` in message `.google.devicesandservices.health.v4.Height` fix!: Changed proto3 optional flag of an existing field `root_mean_square_of_successive_differences_milliseconds` in message `.google.devicesandservices.health.v4.HeartRateVariability` fix!: Changed proto3 optional flag of an existing field `standard_deviation_milliseconds` in message `.google.devicesandservices.health.v4.HeartRateVariability` fix!: Changed proto3 optional flag of an existing field `milliliters` in message `.google.devicesandservices.health.v4.VolumeQuantity` fix!: Changed proto3 optional flag of an existing field `milliliters_sum` in message `.google.devicesandservices.health.v4.HydrationLogRollupValue` fix!: Changed proto3 optional flag of an existing field `percentage` in message `.google.devicesandservices.health.v4.OxygenSaturation` fix!: Changed proto3 optional flag of an existing field `breaths_per_minute` in message `.google.devicesandservices.health.v4.RespiratoryRateSleepSummary` fix!: Changed proto3 optional flag of an existing field `standard_deviation` in message `.google.devicesandservices.health.v4.RespiratoryRateSleepSummary` fix!: Changed proto3 optional flag of an existing field `signal_to_noise` in message `.google.devicesandservices.health.v4.RespiratoryRateSleepSummary` fix!: Changed proto3 optional flag of an existing field `minutes` in message `.google.devicesandservices.health.v4.Sleep` fix!: Changed proto3 optional flag of an existing field `count` in message `.google.devicesandservices.health.v4.Sleep` fix!: Changed proto3 optional flag of an existing field `count` in message `.google.devicesandservices.health.v4.Steps` fix!: Changed proto3 optional flag of an existing field `count_sum` in message `.google.devicesandservices.health.v4.StepsRollupValue` fix!: Changed proto3 optional flag of an existing field `stroke_count` in message `.google.devicesandservices.health.v4.SwimLengthsData` fix!: Changed proto3 optional flag of an existing field `stroke_count_sum` in message `.google.devicesandservices.health.v4.SwimLengthsDataRollupValue` fix!: Changed proto3 optional flag of an existing field `kcal_sum` in message `.google.devicesandservices.health.v4.TotalCaloriesRollupValue` fix!: Changed proto3 optional flag of an existing field `vo2_max` in message `.google.devicesandservices.health.v4.VO2Max` fix!: Changed proto3 optional flag of an existing field `weight_grams` in message `.google.devicesandservices.health.v4.Weight` fix!: Changed proto3 optional flag of an existing field `weight_grams_avg` in message `.google.devicesandservices.health.v4.WeightRollupValue` PiperOrigin-RevId: 918350225 Source-Link: googleapis/googleapis@ace54bb Source-Link: googleapis/googleapis-gen@4adf115 Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWRldmljZXNhbmRzZXJ2aWNlcy1oZWFsdGgvLk93bEJvdC55YW1sIiwiaCI6IjRhZGYxMTUwNzEyYThmYzVhYjZhNDAxMGVhY2RjY2VmZmM4N2UxNTQifQ==
Collaborator
|
/gcbrun |
Collaborator
|
/gcbrun |
…ice (SaMD) metadata tracking feat: add core health data types and rollups for nutrition, core body temperature, ECG, irregular rhythm notifications (IRN), blood glucose, and active energy burned feat: expand DataPoint and DataPoint.Value messages with optional fields and rollups for new health metrics feat: add CreateSubscription, ListSubscriptions, UpdateSubscription, and DeleteSubscription RPCs alongside the Subscription resource definition feat: add GetIrnProfile, GetPairedDevice, and ListPairedDevices RPCs alongside PairedDevice and IrnProfile messages feat: introduce OAuth scopes for ECG, IRN readonly access feat: add User root resource message docs: update ListDataPointsRequest filter documentation clarifying session start time comparison rules for ECG and Sleep PiperOrigin-RevId: 922088546 Source-Link: googleapis/googleapis@8490ca4 Source-Link: googleapis/googleapis-gen@1c216d7 Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWRldmljZXNhbmRzZXJ2aWNlcy1oZWFsdGgvLk93bEJvdC55YW1sIiwiaCI6IjFjMjE2ZDdkZDRhODU4OTZjMDQxNmU2OTRkN2Q4YmQ4NGU3Y2EzMDAifQ==
Collaborator
|
/gcbrun |
Collaborator
|
/gcbrun |
pearigee
approved these changes
May 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat: add core health data types and rollups for nutrition, core body temperature, ECG, irregular rhythm notifications (IRN), blood glucose, and active energy burned
feat: expand DataPoint and DataPoint.Value messages with optional fields and rollups for new health metrics
feat: add CreateSubscription, ListSubscriptions, UpdateSubscription, and DeleteSubscription RPCs alongside the Subscription resource definition
feat: add GetIrnProfile, GetPairedDevice, and ListPairedDevices RPCs alongside PairedDevice and IrnProfile messages
feat: introduce OAuth scopes for ECG, IRN readonly access
feat: add User root resource message
docs: update ListDataPointsRequest filter documentation clarifying session start time comparison rules for ECG and Sleep
PiperOrigin-RevId: 922088546
Source-Link: googleapis/googleapis@8490ca4
Source-Link: https://github.com/googleapis/googleapis-gen/commit/1c216d7dd4a85896c0416e694d7d8bd84e7ca300
Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWRldmljZXNhbmRzZXJ2aWNlcy1oZWFsdGgvLk93bEJvdC55YW1sIiwiaCI6IjFjMjE2ZDdkZDRhODU4OTZjMDQxNmU2OTRkN2Q4YmQ4NGU3Y2EzMDAifQ==
BEGIN_NESTED_COMMIT
feat: [health] Introduce Data Subscription Service for managing webhook notifications
feat: Add GetDataPoint and GetIdentity methods to DataPointsService
feat: Enable filtering Electrocardiogram data by start time
docs: Update ExportExerciseTcx documentation for direct download via HTTP
fix!: Changed proto3 optional flag of an existing field
active_zone_minutesin message.google.devicesandservices.health.v4.ActiveZoneMinutesfix!: Changed proto3 optional flag of an existing field
sum_in_cardio_heart_zonein message.google.devicesandservices.health.v4.ActiveZoneMinutesRollupValuefix!: Changed proto3 optional flag of an existing field
sum_in_peak_heart_zonein message.google.devicesandservices.health.v4.ActiveZoneMinutesRollupValuefix!: Changed proto3 optional flag of an existing field
sum_in_fat_burn_heart_zonein message.google.devicesandservices.health.v4.ActiveZoneMinutesRollupValuefix!: Changed proto3 optional flag of an existing field
active_minutesin message.google.devicesandservices.health.v4.ActiveMinutesfix!: Changed proto3 optional flag of an existing field
active_minutes_sumin message.google.devicesandservices.health.v4.ActiveMinutesRollupValuefix!: Changed proto3 optional flag of an existing field
gain_millimetersin message.google.devicesandservices.health.v4.Altitudefix!: Changed proto3 optional flag of an existing field
kcalin message.google.devicesandservices.health.v4.BasalEnergyBurnedfix!: Changed proto3 optional flag of an existing field
percentagein message.google.devicesandservices.health.v4.BodyFatfix!: Changed proto3 optional flag of an existing field
body_fat_percentage_avgin message.google.devicesandservices.health.v4.BodyFatRollupValuefix!: Changed proto3 optional flag of an existing field
kcalin message.google.devicesandservices.health.v4.CaloriesInHeartRateZoneRollupValuefix!: Changed proto3 optional flag of an existing field
min_beats_per_minutein message.google.devicesandservices.health.v4.DailyHeartRateZonesfix!: Changed proto3 optional flag of an existing field
max_beats_per_minutein message.google.devicesandservices.health.v4.DailyHeartRateZonesfix!: Changed proto3 optional flag of an existing field
breaths_per_minutein message.google.devicesandservices.health.v4.DailyRespiratoryRatefix!: Changed proto3 optional flag of an existing field
average_percentagein message.google.devicesandservices.health.v4.DailyOxygenSaturationfix!: Changed proto3 optional flag of an existing field
lower_bound_percentagein message.google.devicesandservices.health.v4.DailyOxygenSaturationfix!: Changed proto3 optional flag of an existing field
upper_bound_percentagein message.google.devicesandservices.health.v4.DailyOxygenSaturationfix!: Changed proto3 optional flag of an existing field
standard_deviation_percentagein message.google.devicesandservices.health.v4.DailyOxygenSaturationfix!: Changed proto3 optional flag of an existing field
beats_per_minutein message.google.devicesandservices.health.v4.DailyRestingHeartRatefix!: Changed proto3 optional flag of an existing field
nightly_temperature_celsiusin message.google.devicesandservices.health.v4.DailySleepTemperatureDerivationsfix!: Changed proto3 optional flag of an existing field
baseline_temperature_celsiusin message.google.devicesandservices.health.v4.DailySleepTemperatureDerivationsfix!: Changed proto3 optional flag of an existing field
relative_nightly_stddev_30d_celsiusin message.google.devicesandservices.health.v4.DailySleepTemperatureDerivationsfix!: Changed proto3 optional flag of an existing field
vo2_maxin message.google.devicesandservices.health.v4.DailyVO2Maxfix!: Changed proto3 optional flag of an existing field
vo2_max_covariancein message.google.devicesandservices.health.v4.DailyVO2Maxfix!: Changed proto3 optional flag of an existing field
millimetersin message.google.devicesandservices.health.v4.Distancefix!: Changed proto3 optional flag of an existing field
millimeters_sumin message.google.devicesandservices.health.v4.DistanceRollupValuefix!: Changed proto3 optional flag of an existing field
pool_length_millimetersin message.google.devicesandservices.health.v4.Exercisefix!: Changed proto3 optional flag of an existing field
countin message.google.devicesandservices.health.v4.Floorsfix!: Changed proto3 optional flag of an existing field
count_sumin message.google.devicesandservices.health.v4.FloorsRollupValuefix!: Changed proto3 optional flag of an existing field
gain_millimeters_sumin message.google.devicesandservices.health.v4.AltitudeRollupValuefix!: Changed proto3 optional flag of an existing field
beats_per_minutein message.google.devicesandservices.health.v4.HeartRatefix!: Changed proto3 optional flag of an existing field
rate_minin message.google.devicesandservices.health.v4.RunVO2MaxRollupValuefix!: Changed proto3 optional flag of an existing field
rate_maxin message.google.devicesandservices.health.v4.RunVO2MaxRollupValuefix!: Changed proto3 optional flag of an existing field
rate_avgin message.google.devicesandservices.health.v4.RunVO2MaxRollupValuefix!: Changed proto3 optional flag of an existing field
run_vo2_maxin message.google.devicesandservices.health.v4.RunVO2Maxfix!: Changed proto3 optional flag of an existing field
height_millimetersin message.google.devicesandservices.health.v4.Heightfix!: Changed proto3 optional flag of an existing field
root_mean_square_of_successive_differences_millisecondsin message.google.devicesandservices.health.v4.HeartRateVariabilityfix!: Changed proto3 optional flag of an existing field
standard_deviation_millisecondsin message.google.devicesandservices.health.v4.HeartRateVariabilityfix!: Changed proto3 optional flag of an existing field
millilitersin message.google.devicesandservices.health.v4.VolumeQuantityfix!: Changed proto3 optional flag of an existing field
milliliters_sumin message.google.devicesandservices.health.v4.HydrationLogRollupValuefix!: Changed proto3 optional flag of an existing field
percentagein message.google.devicesandservices.health.v4.OxygenSaturationfix!: Changed proto3 optional flag of an existing field
breaths_per_minutein message.google.devicesandservices.health.v4.RespiratoryRateSleepSummaryfix!: Changed proto3 optional flag of an existing field
standard_deviationin message.google.devicesandservices.health.v4.RespiratoryRateSleepSummaryfix!: Changed proto3 optional flag of an existing field
signal_to_noisein message.google.devicesandservices.health.v4.RespiratoryRateSleepSummaryfix!: Changed proto3 optional flag of an existing field
minutesin message.google.devicesandservices.health.v4.Sleepfix!: Changed proto3 optional flag of an existing field
countin message.google.devicesandservices.health.v4.Sleepfix!: Changed proto3 optional flag of an existing field
countin message.google.devicesandservices.health.v4.Stepsfix!: Changed proto3 optional flag of an existing field
count_sumin message.google.devicesandservices.health.v4.StepsRollupValuefix!: Changed proto3 optional flag of an existing field
stroke_countin message.google.devicesandservices.health.v4.SwimLengthsDatafix!: Changed proto3 optional flag of an existing field
stroke_count_sumin message.google.devicesandservices.health.v4.SwimLengthsDataRollupValuefix!: Changed proto3 optional flag of an existing field
kcal_sumin message.google.devicesandservices.health.v4.TotalCaloriesRollupValuefix!: Changed proto3 optional flag of an existing field
vo2_maxin message.google.devicesandservices.health.v4.VO2Maxfix!: Changed proto3 optional flag of an existing field
weight_gramsin message.google.devicesandservices.health.v4.Weightfix!: Changed proto3 optional flag of an existing field
weight_grams_avgin message.google.devicesandservices.health.v4.WeightRollupValuePiperOrigin-RevId: 918350225
Source-Link: googleapis/googleapis@ace54bb
Source-Link: https://github.com/googleapis/googleapis-gen/commit/4adf1150712a8fc5ab6a4010eacdcceffc87e154
Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWRldmljZXNhbmRzZXJ2aWNlcy1oZWFsdGgvLk93bEJvdC55YW1sIiwiaCI6IjRhZGYxMTUwNzEyYThmYzVhYjZhNDAxMGVhY2RjY2VmZmM4N2UxNTQifQ==
END_NESTED_COMMIT